예제 #1
0
파일: cleanup.py 프로젝트: tanzr/himlarcli
def action_notify():
    q = "Send mail to all users of these instances about termination? (yes|no) "
    answer = raw_input(q)
    if answer.lower() != 'yes':
        print "Abort sending mail!"
        return

    search_filter = dict()
    if options.type:
        search_filter['type'] = options.type
    projects = ksclient.get_projects(domain=options.domain, **search_filter)
    for region in regions:
        novaclient = Nova(options.config,
                          debug=options.debug,
                          log=logger,
                          region=region)
        for project in projects:
            if not options.filter or options.filter in project.name:
                instances = novaclient.get_project_instances(project.id)
                mapping = dict(region=region.upper(), project=project.name)
                body_content = himutils.load_template(
                    inputfile=options.template, mapping=mapping, log=logger)
                subject = ('UH-IaaS: Your instances will be terminated (%s)' %
                           (region))

                notify = Notify(options.config, debug=False, log=logger)
                notify.set_keystone_client(ksclient)
                notify.set_dry_run(options.dry_run)
                users = notify.mail_instance_owner(instances, body_content,
                                                   subject)
                notify.close()
                print users
예제 #2
0
def action_notify():
    q = "Send mail to all users of these instances about termination? (yes|no) "
    answer = raw_input(q)
    if answer.lower() != 'yes':
        print "Abort sending mail!"
        return

    search_filter = dict()
    if options.type:
        search_filter['type'] = options.type
    projects = ksclient.get_projects(domain=options.domain, **search_filter)
    for region in regions:
        novaclient = Nova(options.config, debug=options.debug, log=logger, region=region)
        for project in projects:
            if not options.filter or options.filter in project.name:
                instances = novaclient.get_project_instances(project.id)
                verified_instances = list()
                for i in instances:
                    network = i.addresses.keys()[0] if len(i.addresses.keys()) > 0 else 'unknown'
                    if options.network and options.network != network:
                        continue
                    verified_instances.append(i)
                mapping = dict(region=region.upper(), project=project.name)
                body_content = himutils.load_template(inputfile=options.template,
                                                      mapping=mapping,
                                                      log=logger)
                subject = ('UH-IaaS: Your instances will be terminated (%s)' % (region))

                notify = Notify(options.config, debug=False, log=logger)
                notify.set_keystone_client(ksclient)
                notify.set_dry_run(options.dry_run)
                users = notify.mail_instance_owner(verified_instances, body_content, subject)
                notify.close()
                if users:
                    print users
예제 #3
0
파일: notify.py 프로젝트: norcams/himlarcli
def action_instance():
    for region in regions:
        novaclient = Nova(options.config, debug=options.debug, log=logger, region=region)
        instances = novaclient.get_instances()
        mapping = dict(region=region.upper())
        body_content = himutils.load_template(inputfile=options.template,
                                              mapping=mapping,
                                              log=logger)
        subject = options.subject
        notify = Notify(options.config, debug=False, log=logger)
        notify.set_keystone_client(ksclient)
        notify.set_dry_run(options.dry_run)
        users = notify.mail_instance_owner(instances=instances,
                                           body=body_content,
                                           subject=subject,
                                           admin=True,
                                           options=['project', 'az'])
        notify.close()
        printer.output_dict(users)
예제 #4
0
def action_instance():
    for region in regions:
        novaclient = Nova(options.config,
                          debug=options.debug,
                          log=logger,
                          region=region)
        instances = novaclient.get_instances()
        mapping = dict(region=region.upper())
        body_content = himutils.load_template(inputfile=options.template,
                                              mapping=mapping,
                                              log=logger)
        subject = options.subject
        notify = Notify(options.config, debug=False, log=logger)
        notify.set_keystone_client(ksclient)
        notify.set_dry_run(options.dry_run)
        users = notify.mail_instance_owner(instances=instances,
                                           body=body_content,
                                           subject=subject,
                                           admin=True,
                                           options=['project', 'az'])
        notify.close()
        printer.output_dict(users)