Beispiel #1
0
    def __init__(
            self,
            reactor,
            app_name,
            app_mode,
            # NB 'connListener': currently this is the daemon
            connListener=None,
            connListenerArgs=[],
            connListenerKWArgs={},
            **kwargs):

        self.initialDelay = kwargs.get("initialDelay", 3)
        self.factor = kwargs.get("factor", 1)
        self.jitter = kwargs.get("jitter", .10)
        self.currProtocol = None
        self.messageQueue = Queue.Queue()
        self.reactor = reactor
        self.app_name = app_name
        self.app_mode = app_mode
        self.connListener = connListener
        self.connListenerArgs = connListenerArgs
        self.connListenerKWArgs = connListenerKWArgs

        self.app_id = kwargs["app_id"]
        self.apns_host = kwargs.get("apns_host")
        self.apns_port = kwargs.get("apns_port")
        # see if we need defaults
        assert self.apns_host or self.app_mode, 'Either one of apns_host and app_mode needs to be set!'
        self.apns_host = self.apns_host or    \
                        (self.app_mode == "apns_dev" and constants.DEFAULT_APNS_DEV_HOST) or  \
                        (self.app_mode == "apns_prod" and constants.DEFAULT_APNS_PROD_HOST)
        assert self.apns_port or self.app_mode, 'Either one of apns_port and app_mode needs to be set!'
        self.apns_port = self.apns_port or    \
                    (self.app_mode == "apns_dev" and constants.DEFAULT_APNS_DEV_PORT) or  \
                    (self.app_mode == "apns_prod" and constants.DEFAULT_APNS_PROD_PORT)

        self.certificate_file = utils.resolve_env_vars(
            kwargs["certificate_file"])
        self.privatekey_file = utils.resolve_env_vars(
            kwargs["privatekey_file"])
        logger.info("Certificate File: %s" % self.certificate_file)
        logger.info("PrivateKey File: %s" % self.privatekey_file)
        self.client_context_factory = SSLContextFactory(
            self.privatekey_file, self.certificate_file)

        logger.info("Connecting to APNS Server, App: %s:%s" %
                    (self.app_mode, self.app_id))
        # apns_host seems to be of type bool sometimes
        self.reactor.connectSSL(self.apns_host, self.apns_port, self,
                                self.client_context_factory)
Beispiel #2
0
    def __init__(self, reactor, app_name, app_mode, **kwargs):
        self.reactor = reactor
        self.app_name = app_name
        self.app_mode = app_mode
        self.app_id = kwargs["app_id"]
        self.feedback_host = kwargs.get("feedback_host")
        self.feedback_port = kwargs.get("feedback_port")

        # see if we need defaults
        self.feedback_host = self.feedback_host or    \
                            (self.app_mode == "apns_dev" and constants.DEFAULT_FEEDBACK_DEV_HOST) or  \
                            (self.app_mode == "apns_prod" and constants.DEFAULT_FEEDBACK_PROD_HOST)
        self.feedback_port = self.feedback_port or    \
                            (self.app_mode == "apns_dev" and constants.DEFAULT_FEEDBACK_DEV_PORT) or  \
                            (self.app_mode == "apns_prod" and constants.DEFAULT_FEEDBACK_PROD_PORT)

        self.certificate_file = utils.resolve_env_vars(kwargs["certificate_file"])
        self.privatekey_file = utils.resolve_env_vars(kwargs["privatekey_file"])
        self.client_context_factory = SSLContextFactory(self.privatekey_file, self.certificate_file)
Beispiel #3
0
def main(args):
    logging.basicConfig(level=getattr(logging, args.log))
    utils.GCLOUD_OPTIONS = utils.GcloudOptions(dry_run=args.dry_run,
                                               gcloud_bin=args.gcloud_bin)

    # Read and parse the project configuration YAML file.
    all_projects = utils.resolve_env_vars(
        utils.read_yaml_file(args.project_yaml))
    if not all_projects:
        logging.error('Error loading project YAML.')
        return

    logging.info('Validating project YAML against schema.')
    try:
        utils.validate_config_yaml(all_projects)
    except jsonschema.exceptions.ValidationError as e:
        logging.error('Error in YAML config: %s', e)
        return

    overall = all_projects['overall']
    audit_logs_project = all_projects.get('audit_logs_project')

    projects = []
    # Always deploy the remote audit logs project first (if present).
    if audit_logs_project:
        projects.append(
            ProjectConfig(overall=overall,
                          project=audit_logs_project,
                          audit_logs_project=None))

    for project_config in all_projects.get('projects', []):
        projects.append(
            ProjectConfig(overall=overall,
                          project=project_config,
                          audit_logs_project=audit_logs_project))

    # If resuming setup from a particular project, skip to that project.
    if args.resume_from_project:
        while (projects and
               projects[0].project['project_id'] != args.resume_from_project):
            skipped = projects.pop(0)
            logging.info('Skipping project %s', skipped.project['project_id'])
        if not projects:
            logging.error('Project not found: %s', args.resume_from_project)

    if projects:
        starting_step = max(1, args.resume_from_step)
        for config in projects:
            logging.info('Setting up project %s', config.project['project_id'])
            if not setup_new_project(config, starting_step):
                # Don't attempt to deploy additional projects if one project failed.
                return
            starting_step = 1
    else:
        logging.error('No projects to deploy.')
Beispiel #4
0
    def __init__(self, reactor, app_name, app_mode,
                 # NB 'connListener': currently this is the daemon
                 connListener = None,
                 connListenerArgs = [],
                 connListenerKWArgs = {},
                 **kwargs):

        self.initialDelay = kwargs.get("initialDelay", 3)
        self.factor = kwargs.get("factor", 1)
        self.jitter = kwargs.get("jitter", .10)
        self.currProtocol = None
        self.messageQueue = Queue.Queue()
        self.reactor = reactor
        self.app_name = app_name
        self.app_mode = app_mode
        self.connListener = connListener
        self.connListenerArgs = connListenerArgs
        self.connListenerKWArgs = connListenerKWArgs

        self.app_id = kwargs["app_id"]
        self.apns_host = kwargs.get("apns_host")
        self.apns_port = kwargs.get("apns_port")
        # see if we need defaults
        assert self.apns_host or self.app_mode, 'Either one of apns_host and app_mode needs to be set!'
        self.apns_host = self.apns_host or    \
                        (self.app_mode == "apns_dev" and constants.DEFAULT_APNS_DEV_HOST) or  \
                        (self.app_mode == "apns_prod" and constants.DEFAULT_APNS_PROD_HOST)
        assert self.apns_port or self.app_mode, 'Either one of apns_port and app_mode needs to be set!'
        self.apns_port = self.apns_port or    \
                    (self.app_mode == "apns_dev" and constants.DEFAULT_APNS_DEV_PORT) or  \
                    (self.app_mode == "apns_prod" and constants.DEFAULT_APNS_PROD_PORT)

        self.certificate_file = utils.resolve_env_vars(kwargs["certificate_file"])
        self.privatekey_file = utils.resolve_env_vars(kwargs["privatekey_file"])
        logger.info("Certificate File: %s" % self.certificate_file)
        logger.info("PrivateKey File: %s" % self.privatekey_file)
        self.client_context_factory = SSLContextFactory(self.privatekey_file, self.certificate_file)

        logger.info("Connecting to APNS Server, App: %s:%s" % (self.app_mode, self.app_id))
        # apns_host seems to be of type bool sometimes
        self.reactor.connectSSL(self.apns_host, self.apns_port, self, self.client_context_factory)
Beispiel #5
0
    def __init__(self, reactor, app_name, app_mode, **kwargs):
        self.reactor = reactor
        self.app_name = app_name
        self.app_mode = app_mode
        self.app_id = kwargs["app_id"]
        self.feedback_host = kwargs.get("feedback_host")
        self.feedback_port = kwargs.get("feedback_port")

        # see if we need defaults
        self.feedback_host = self.feedback_host or    \
                            (self.app_mode == "apns_dev" and constants.DEFAULT_FEEDBACK_DEV_HOST) or  \
                            (self.app_mode == "apns_prod" and constants.DEFAULT_FEEDBACK_PROD_HOST)
        self.feedback_port = self.feedback_port or    \
                            (self.app_mode == "apns_dev" and constants.DEFAULT_FEEDBACK_DEV_PORT) or  \
                            (self.app_mode == "apns_prod" and constants.DEFAULT_FEEDBACK_PROD_PORT)

        self.certificate_file = utils.resolve_env_vars(
            kwargs["certificate_file"])
        self.privatekey_file = utils.resolve_env_vars(
            kwargs["privatekey_file"])
        self.client_context_factory = SSLContextFactory(
            self.privatekey_file, self.certificate_file)