class ResourceGetProductionServers(AxolResource):
    """docstring for ResourceGetProductionServers
	Must implement:
		_show_help
		self.methods = {<method_type>: function}
		self.source = {keyword}
		request_{keyword}_api
		calculate_new_fields
	"""
    required_post = {'network': (True, u's'), 'profile': (False, u's')}

    def __init__(self):
        super(ResourceGetProductionServers, self).__init__()
        self.source = 'get_production_servers'
        self.local = True

    def _show_help(self):
        return {
            'Help': {
                'api': '/api/get_production_servers',
                'method': 'POST',
                'required data': {
                    'network': '<internal, external>'
                },
                'version': api
            }
        }

    @staticmethod
    @app.route('/api/get_production_servers', methods=['POST', 'GET'])
    def api_get_production_servers():
        if request.method == 'GET':
            return jsonify(ResourceGetProductionServers()._show_help())
        try:
            data = CommonResource.handle_request(
                request, ResourceGetProductionServers.required_post)
        except Exception, e:
            CommonLogger.log(e, 'get_production_servers',
                             'api_get_production_servers')
            return jsonify({'response': {'error': str(e)}})
        try:
            roledefs = generate_base_roles(data.network)
            server_dict = ResourceGetProductionServers.create_server_list(
                roledefs, 'production_servers')
        except Exception, e:
            CommonLogger.log(e, 'get_production_servers',
                             'api_get_production_servers')
            return jsonify({'response': {'error': str(e)}})
Exemplo n.º 2
0
#! /usr/bin/env python
#-----------------------------------------#
# Written by Kelcey Damage, 2013
#+

import os, subprocess
from paramiko import SSHClient, AutoAddPolicy
import time
import sys
sys.path.append("/Volumes/git/axol")
from axol_common.distributed import axol_roledefs

#folder_to_be_archived = '/home/mysql_backup_v2.py'

roledefs = axol_roledefs.generate_base_roles('external')

class DeployTool(object):
	"""docstring for ClassName"""
	def __init__(self, remote_user, remote_password, remote_server):
		self.remote_user = remote_user
		self.remote_password = remote_password
		self.remote_server = remote_server
		self.client = SSHClient()
		self.client.set_missing_host_key_policy(AutoAddPolicy())
		self.client.load_system_host_keys()
		self.client.connect(
			hostname=self.remote_server,
			username=self.remote_user,
			password=self.remote_password
			)
Exemplo n.º 3
0
			or not 'network' in request.json:
				return jsonify({'error': 'missing required data'})
			response_object = GenericDataObject(request.json)
			roledefs = literal_eval(DW.cache_key_get('roledefs'))
			if response_object.action == 'remove':
				changed_roles = {}
				try:
					for name in roledefs:
						if response_object.server_name in name:
							host = roledefs[name][response_object.network]
					for name in roledefs:
						if host in roledefs[name]:
							roledefs[name].remove(host)
							changed_roles[name] = roledefs[name]
					DW.cache_key_set('roledefs', roledefs)
				except Exception, e:
					return jsonify({'error':e})
				return jsonify({
					'host':host,
					'changed_roles': changed_roles
					})
			elif response_object.action == 'list':
				return jsonify(roledefs)
			elif response_object.action == 'restore':
				roledefs = generate_base_roles()
				DW.cache_key_set('roledefs', roledefs)
				return jsonify(roledefs)
			elif response_object.action == 'list_ec2':
				roledefs = generate_base_roles()
				return jsonify(roledefs)
Exemplo n.º 4
0
class ResourceAdmin(AxolResource):
    """docstring for ResourceProcessor
	Must implement:
		_show_help
		self.source = {keyword}
		request_{keyword}_api
		calculate_new_fields
	"""
    def __init__(self):
        super(ResourceAdmin, self).__init__()
        self.source = 'version'
        self.local = True

    def _show_help(self):
        return {
            'Help': {
                'roles administration': {
                    'api': '/api/system/admin/roles',
                    'available_methods': {
                        'POST': {
                            'required data': [
                                'network=<internal, external>',
                                'action=<remove, list, list_ec2, restore>',
                                'server_name=<name of server>'
                            ]
                        }
                    }
                }
            }
        }

    @staticmethod
    @app.route('/api/manage_alerts', methods=['POST', 'GET'])
    def request_admin_api():
        print request.method
        if request.method == 'GET':
            return jsonify(ResourceAdmin()._show_help())
        else:
            print request.json
            if not 'server_name' in request.json \
            or not 'action' in request.json \
            or not 'network' in request.json:
                return jsonify({'error': 'missing required data'})
            response_object = GenericDataObject(request.json)
            roledefs = literal_eval(DW.cache_key_get('roledefs'))
            if response_object.action == 'remove':
                changed_roles = {}
                try:
                    for name in roledefs:
                        if response_object.server_name in name:
                            host = roledefs[name][response_object.network]
                    for name in roledefs:
                        if host in roledefs[name]:
                            roledefs[name].remove(host)
                            changed_roles[name] = roledefs[name]
                    DW.cache_key_set('roledefs', roledefs)
                except Exception, e:
                    return jsonify({'error': e})
                return jsonify({'host': host, 'changed_roles': changed_roles})
            elif response_object.action == 'list':
                return jsonify(roledefs)
            elif response_object.action == 'restore':
                roledefs = generate_base_roles()
                DW.cache_key_set('roledefs', roledefs)
                return jsonify(roledefs)
Exemplo n.º 5
0
            print request.json
            if not 'server_name' in request.json \
            or not 'action' in request.json \
            or not 'network' in request.json:
                return jsonify({'error': 'missing required data'})
            response_object = GenericDataObject(request.json)
            roledefs = literal_eval(DW.cache_key_get('roledefs'))
            if response_object.action == 'remove':
                changed_roles = {}
                try:
                    for name in roledefs:
                        if response_object.server_name in name:
                            host = roledefs[name][response_object.network]
                    for name in roledefs:
                        if host in roledefs[name]:
                            roledefs[name].remove(host)
                            changed_roles[name] = roledefs[name]
                    DW.cache_key_set('roledefs', roledefs)
                except Exception, e:
                    return jsonify({'error': e})
                return jsonify({'host': host, 'changed_roles': changed_roles})
            elif response_object.action == 'list':
                return jsonify(roledefs)
            elif response_object.action == 'restore':
                roledefs = generate_base_roles()
                DW.cache_key_set('roledefs', roledefs)
                return jsonify(roledefs)
            elif response_object.action == 'list_ec2':
                roledefs = generate_base_roles()
                return jsonify(roledefs)
Exemplo n.º 6
0
#! /usr/bin/env python
#-----------------------------------------#
# Written by Kelcey Damage, 2013
#+

import os, subprocess
from paramiko import SSHClient, AutoAddPolicy
import time
import sys
sys.path.append("/Volumes/git/axol")
from axol_common.distributed import axol_roledefs

#folder_to_be_archived = '/home/mysql_backup_v2.py'

roledefs = axol_roledefs.generate_base_roles('external')


class DeployTool(object):
    """docstring for ClassName"""
    def __init__(self, remote_user, remote_password, remote_server):
        self.remote_user = remote_user
        self.remote_password = remote_password
        self.remote_server = remote_server
        self.client = SSHClient()
        self.client.set_missing_host_key_policy(AutoAddPolicy())
        self.client.load_system_host_keys()
        self.client.connect(hostname=self.remote_server,
                            username=self.remote_user,
                            password=self.remote_password)

    def restart_node(self):