Exemplo n.º 1
0
    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()
Exemplo n.º 2
0
 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()
Exemplo n.º 3
0
 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()
Exemplo n.º 4
0
 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()
Exemplo n.º 5
0
 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()
Exemplo n.º 6
0
 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()
Exemplo n.º 7
0
    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")
Exemplo n.º 8
0
 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()
Exemplo n.º 9
0
 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()
Exemplo n.º 10
0
    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()
Exemplo n.º 11
0
 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()
Exemplo n.º 12
0
    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)
Exemplo n.º 13
0
 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()
Exemplo n.º 14
0
 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()
Exemplo n.º 15
0
 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()
Exemplo n.º 16
0
 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)
Exemplo n.º 17
0
    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()
Exemplo n.º 18
0
 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()
Exemplo n.º 19
0
    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)
Exemplo n.º 20
0
 def create_iam(self):
     """Create IAM resources."""
     utils.banner("Creating IAM")
     iam.create_iam_resources(env=self.env, app=self.app)
Exemplo n.º 21
0
 def create_archaius(self):
     """Create S3 bucket for Archaius."""
     utils.banner("Creating S3")
     s3.init_properties(env=self.env, app=self.app)