if __name__ == '__main__':
    try:

        username = os.environ.get('SF_USERNAME')
        password = os.environ.get('SF_PASSWORD')
        serverurl = os.environ.get('SF_SERVERURL')
        push_request_id = os.environ.get('PUSH_REQUEST')
        subscriber_where = os.environ.get('SUBSCRIBER_WHERE', None)

        default_where = {'PackagePushRequest': "Id = '%s'" % push_request_id}
        if subscriber_where:
            default_where['PackageSubscriber'] = subscriber_where

        push_api = SalesforcePushApi(username,
                                     password,
                                     serverurl,
                                     lazy=['subscribers', 'jobs'],
                                     default_where=default_where)
        push_request = push_api.get_push_request_objs("Id = '%s'" %
                                                      push_request_id,
                                                      limit=1)[0]

        interval = 10
        if push_request.status not in completed_statuses:
            print 'Push request is not yet complete.  Polling for status every %s seconds until completion...' % interval

        i = 0
        while push_request.status not in completed_statuses:
            if i == 10:
                print 'This is taking a while! Polling every 60 seconds...'
                interval = 60
Example #2
0
        version_id = os.environ.get('VERSION')
        subscriber_where = os.environ.get('SUBSCRIBER_WHERE', None)

        # Add standard filters for only active orgs
        default_where = {
            'PackageSubscriber':
            "OrgStatus = 'Active' AND InstalledStatus = 'i'"
        }

        # Append subscriber where if passed in environment
        if subscriber_where:
            default_where[
                'PackageSubscriber'] += " AND (%s)" % subscriber_where

        push_api = SalesforcePushApi(username,
                                     password,
                                     serverurl,
                                     default_where=default_where)

        # Get the target version
        version = push_api.get_package_version_objs("Id = '%s'" % version_id,
                                                    limit=1)[0]

        # Add exclusion of all orgs running on newer releases
        newer_versions = version.get_newer_released_version_objs()
        excluded_versions = [
            str(version.sf_id),
        ]
        for newer in newer_versions:
            excluded_versions.append(str(newer.sf_id))
        if len(excluded_versions) == 1:
            push_api.default_where[
Example #3
0
            startTime = None

        if not subscribers and not subscribers_file:
            raise ValueError(
                'You must provide either the SUBSCRIBERS or SUBSCRIBERS_FILE environment variables'
            )

        if subscribers:
            orgs = subscribers.split(',')
        else:
            f_orgs = open(subscribers_file, 'r')
            orgs = []
            for org in f_orgs:
                orgs.append(org.strip())

        push_api = SalesforcePushApi(username, password, serverurl)
        version = push_api.get_package_version_objs("Id = '%s'" % version,
                                                    limit=1)[0]
        print 'Scheduling push upgrade for %s.%s to %s orgs' % (
            version.major, version.minor, len(orgs))

        if startTime:
            print 'Scheduled start time: %s UTC' % startTime

        request_id = push_api.create_push_request(version, orgs, startTime)

        if len(orgs) > 1000:
            print "Delaying 30 seconds to allow all jobs to initialize..."
            time.sleep(30)

        print 'Push Request %s is populated, setting status to Pending to queue execution.' % request_id