def test_object_not_found_exceptions(self): with self.assertRaises(DevopsObjNotFound): Environment.get(name='other-env') with self.assertRaises(DevopsObjNotFound): self.env.get_group(name='other-rack') with self.assertRaises(DevopsObjNotFound): self.env.get_address_pool(name='other-pool') with self.assertRaises(DevopsObjNotFound): self.env.get_node(name='other-node') group = self.env.get_group(name='rack-01') with self.assertRaises(DevopsObjNotFound): group.get_l2_network_device(name='other-device') with self.assertRaises(DevopsObjNotFound): group.get_network_pool(name='other-pool') with self.assertRaises(DevopsObjNotFound): group.get_node(name='other-node') with self.assertRaises(DevopsObjNotFound): Group.get(name='other-group') node = self.env.get_node(name='slave-01') with self.assertRaises(DevopsObjNotFound): node.get_volume(name='other-volume')
def d_env(self): if self._virt_env is None: if not self._config: try: return Environment.get(name=settings.ENV_NAME) except Exception: self._virt_env = Environment.describe_environment(boot_from=settings.ADMIN_BOOT_DEVICE) self._virt_env.define() else: try: return Environment.get(name=self._config["template"]["devops_settings"]["env_name"]) except Exception: self._virt_env = Environment.create_environment(full_config=self._config) self._virt_env.define() return self._virt_env
def get_env(cls, env_name): """Find and return env by name.""" try: return EnvProxy(Environment.get(name=env_name)) except Exception as e: logger.error( 'failed to find the last created environment{}'.format(e)) raise
def d_env(self): if self._virtual_environment is None: try: return Environment.get(name=settings.ENV_NAME) except Exception: self._virtual_environment = Environment.describe_environment( boot_from=settings.ADMIN_BOOT_DEVICE) self._virtual_environment.define() return self._virtual_environment
def d_env(self): if self._virt_env is None: if not self._config: try: return Environment.get(name=settings.ENV_NAME) except Exception: self._virt_env = Environment.describe_environment( boot_from=settings.ADMIN_BOOT_DEVICE) self._virt_env.define() else: try: return Environment.get(name=self._config['template'] ['devops_settings']['env_name']) except Exception: self._virt_env = Environment.create_environment( full_config=self._config) self._virt_env.define() return self._virt_env
def __init__(self, args): self.args = args self.params = self.get_params() if getattr(self.params, "snapshot-name", None): self.snapshot_name = getattr(self.params, "snapshot-name") if getattr(self.params, "name", None) and getattr(self.params, "command", None) != "create": try: self.env = Environment.get(name=self.params.name) except Environment.DoesNotExist: self.env = None sys.exit("Enviroment with name {} doesn't exist." "".format(self.params.name))
def __init__(self, args): self.args = args self.params = self.get_params() if getattr(self.params, 'snapshot-name', None): self.snapshot_name = getattr(self.params, 'snapshot-name') if (getattr(self.params, 'name', None) and getattr(self.params, 'command', None) != 'create'): try: self.env = Environment.get(name=self.params.name) except DevopsObjNotFound: self.env = None sys.exit("Enviroment with name {} doesn't exist." "".format(self.params.name))
def __init__(self, args): self.args = args self.params = self.get_params() if getattr(self.params, 'snapshot-name', None): self.snapshot_name = getattr(self.params, 'snapshot-name') if (getattr(self.params, 'name', None) and getattr(self.params, 'command', None) != 'create'): try: self.env = Environment.get(name=self.params.name) except Environment.DoesNotExist: self.env = None sys.exit("Enviroment with name {} doesn't exist." "".format(self.params.name))
def do_list(self): env_list = Environment.list_all().values("name", "created") columns = [] for env in env_list: column = collections.OrderedDict({"NAME": env["name"]}) if self.params.list_ips: cur_env = Environment.get(name=env["name"]) admin_ip = "" if "admin" in [node.name for node in cur_env.get_nodes()]: admin_ip = cur_env.get_node(name="admin").get_ip_address_by_network_name("admin") column["ADMIN IP"] = admin_ip if self.params.timestamps: column["CREATED"] = env["created"].strftime("%Y-%m-%d_%H:%M:%S") columns.append(column) self.print_table(headers="keys", columns=columns)
def get_env(cls, env_name=''): """Find and return env by name. If name is empty will try to find the last created env. Will return None is failed to find any env at all. """ env = None try: if env_name: env = Environment.get(name=env_name) else: env = Environment.objects.all().order_by('created').last() except Exception as e: logger.error('failed to find the last created environment{}'. format(e)) raise return env
def do_list(self): env_list = Environment.list().values('name', 'created') for env in env_list: if self.params.list_ips: cur_env = Environment.get(name=env['name']) admin_ip = '' if 'admin' in [node.name for node in cur_env.get_nodes()]: admin_ip = (cur_env.get_node( name='admin').get_ip_address_by_network_name('admin')) print('{0}\t{1}'.format(env['name'], admin_ip)) elif self.params.timestamps: created_text = env['created'].strftime('%Y-%m-%d_%H:%M:%S') print('{0} {1}'.format(env['name'], created_text)) else: print(env['name']) return env_list
def do_list(self): env_list = Environment.list().values('name', 'created') for env in env_list: if self.params.list_ips: cur_env = Environment.get(name=env['name']) admin_ip = '' if 'admin' in [node.name for node in cur_env.get_nodes()]: admin_ip = (cur_env.get_node(name='admin'). get_ip_address_by_network_name('admin')) print('{0}\t{1}'.format(env['name'], admin_ip)) elif self.params.timestamps: created_text = env['created'].strftime('%Y-%m-%d_%H:%M:%S') print('{0} {1}'.format(env['name'], created_text)) else: print(env['name']) return env_list
def do_list(self): env_list = Environment.list_all().values('name', 'created') columns = [] for env in env_list: column = collections.OrderedDict({'NAME': env['name']}) if self.params.list_ips: cur_env = Environment.get(name=env['name']) admin_ip = '' if 'admin' in [node.name for node in cur_env.get_nodes()]: admin_ip = (cur_env.get_node( name='admin').get_ip_address_by_network_name('admin')) column['ADMIN IP'] = admin_ip if self.params.timestamps: column['CREATED'] = env['created'].strftime( '%Y-%m-%d_%H:%M:%S') columns.append(column) self.print_table(headers="keys", columns=columns)
def do_list(self): env_list = Environment.list_all().values('name', 'created') columns = [] for env in env_list: column = collections.OrderedDict({'NAME': env['name']}) if self.params.list_ips: cur_env = Environment.get(name=env['name']) admin_ip = '' if 'admin' in [node.name for node in cur_env.get_nodes()]: admin_ip = (cur_env.get_node(name='admin'). get_ip_address_by_network_name('admin')) column['ADMIN IP'] = admin_ip if self.params.timestamps: column['CREATED'] = env['created'].strftime( '%Y-%m-%d_%H:%M:%S') columns.append(column) self.print_table(headers="keys", columns=columns)
def setup_env_network(fuel_port=8000): from os import environ environ.setdefault("DJANGO_SETTINGS_MODULE", "devops.settings") from devops.models import Environment s = Environment.get(name=env.host) for net in s.get_networks(): print net.name, net.ip, net.netmask, net.default_gw def get_net(name): return next(x for x in s.get_networks() if x.name == name) def make_ip(ip, last_octet): ip = str(ip.ip).split('.') ip[3] = str(last_octet) return '.'.join(ip) for cluster in clusters('{}:{}'.format(env.host, fuel_port), 'admin', 'admin'): net = get_network('{}:{}'.format(env.host, fuel_port), 'admin', 'admin', cluster['id']) public = get_net('public') management = get_net('management') private = get_net('private') net['public_vrouter_vip'] = make_ip(public, 2) net['public_vip'] = make_ip(public, 3) net['vips']['vrouter_pub']['ipaddr'] = make_ip(public, 2) # "10.21.1.2", net['vips']['management']['ipaddr'] = make_ip(management, 2) # "10.21.2.2" net['vips']['public']['ipaddr'] = make_ip(public, 3) # "10.21.1.3", net['vips']['vrouter']['ipaddr'] = make_ip(management, 2) # "10.21.2.1", net['networking_parameters']['floating_ranges'] = [[ make_ip(public, 130), make_ip(public, 254) ]] # "internal_gateway": "10.21.3.1", net['networking_parameters']['internal_gateway'] = make_ip(private, 1) # "internal_cidr": "10.21.3.0/24", net['networking_parameters']['internal_cidr'] = str( get_net('private').ip) for network in net['networks']: if network['name'] == 'private': continue try: kvm_net = get_net(network['name']) except StopIteration: continue network['ip_ranges'] = [[ make_ip(kvm_net, 1), make_ip(public, 254) ]] network['cidr'] = str(kvm_net.ip) if network['name'] == 'public': network['ip_ranges'] = [[ make_ip(kvm_net, 2), make_ip(kvm_net, 126) ]] network['gateway'] = make_ip(kvm_net, 1) net['management_vrouter_vip'] = make_ip(management, 1) # "10.21.2.1", net['management_vip'] = make_ip(management, 2) # "10.21.2.2", pprint.pprint(net) put_network('{}:{}'.format(env.host, fuel_port), 'admin', 'admin', cluster['id'], net)
def __init__(self): self.params = self.get_params() if (getattr(self.params, 'name', None) and getattr(self.params, 'command', None) != 'create'): self.env = Environment.get(name=self.params.name)
def __init__(self, args): self.args = args self.params = self.get_params() if (getattr(self.params, 'name', None) and getattr(self.params, 'command', None) != 'create'): self.env = Environment.get(name=self.params.name)
def setup_env_network(fuel_port=8000): from os import environ environ.setdefault("DJANGO_SETTINGS_MODULE", "devops.settings") from devops.models import Environment s = Environment.get(name=env.host) for net in s.get_networks(): print net.name, net.ip, net.netmask, net.default_gw def get_net(name): return next(x for x in s.get_networks() if x.name == name) def make_ip(ip, last_octet): ip = str(ip.ip).split('.') ip[3] = str(last_octet) return '.'.join(ip) for cluster in clusters('{}:{}'.format(env.host, fuel_port), 'admin', 'admin'): net = get_network('{}:{}'.format(env.host, fuel_port), 'admin', 'admin', cluster['id']) public = get_net('public') management = get_net('management') private = get_net('private') net['public_vrouter_vip'] = make_ip(public, 2) net['public_vip'] = make_ip(public, 3) net['vips']['vrouter_pub']['ipaddr'] = make_ip(public, 2) # "10.21.1.2", net['vips']['management']['ipaddr'] = make_ip(management, 2) # "10.21.2.2" net['vips']['public']['ipaddr'] = make_ip(public, 3) # "10.21.1.3", net['vips']['vrouter']['ipaddr'] = make_ip(management, 2) # "10.21.2.1", net['networking_parameters']['floating_ranges'] = [ [ make_ip(public, 130), make_ip(public, 254) ] ] # "internal_gateway": "10.21.3.1", net['networking_parameters']['internal_gateway'] = make_ip(private, 1) # "internal_cidr": "10.21.3.0/24", net['networking_parameters']['internal_cidr'] = str(get_net('private').ip) for network in net['networks']: if network['name'] == 'private': continue try: kvm_net = get_net(network['name']) except StopIteration: continue network['ip_ranges'] = [ [ make_ip(kvm_net, 1), make_ip(public, 254) ] ] network['cidr'] = str(kvm_net.ip) if network['name'] == 'public': network['ip_ranges'] = [ [ make_ip(kvm_net, 2), make_ip(kvm_net, 126) ] ] network['gateway'] = make_ip(kvm_net, 1) net['management_vrouter_vip'] = make_ip(management, 1) # "10.21.2.1", net['management_vip'] = make_ip(management, 2) # "10.21.2.2", pprint.pprint(net) put_network('{}:{}'.format(env.host, fuel_port), 'admin', 'admin', cluster['id'], net)
def get_env(): env = os.environ env_name = env['ENV_NAME'] return Environment.get(name=env_name)
def _attach_diagnostic_snapshot(): _configure_log() # FIXME(schipiga): include already installed packages for import visibility sys.path.extend(['/usr/lib/python2.7', '/usr/lib/python2.7/dist-packages', '/usr/local/lib/python2.7/dist-packages']) try: from devops.models import Environment from fuelclient import client, fuelclient_settings from fuelclient.objects import SnapshotTask except ImportError as e: LOGGER.error(e) return job_name = os.environ.get('JOB_NAME') if not job_name: LOGGER.info("Diagnostic snapshot is attached only on CI server") return env_name = os.environ.get('ENV_NAME') if not env_name: LOGGER.error("Environment name isn't specified at build") return try: env = Environment.get(name=env_name) master = env.get_nodes(role__in=('fuel_master', 'admin'))[0] admin_ip = master.get_ip_address_by_network_name('admin') os.environ.update({ 'SERVER_ADDRESS': admin_ip, 'OS_USERNAME': '******', 'OS_PASSWORD': '******', }) fuelclient_settings._SETTINGS = None client.APIClient.__init__() config = SnapshotTask.get_default_config() task = SnapshotTask.start_snapshot_task(config) LOGGER.info('Starting snapshot creating...') task.wait() if task.status != 'ready': LOGGER.error("Snapshot creating is finished with error: {}".format( task.data["message"])) return LOGGER.info("Snapshot creating is finished") response = requests.get( 'http://{}:8000{}'.format(admin_ip, task.data["message"]), stream=True, headers={'x-auth-token': client.APIClient.auth_token}) file_path = os.path.join(_reports_dir(), 'diagnostic_snapshot.tar.xz') with open(file_path, 'wb') as f: for chunk in response.iter_content(65536): if chunk: f.write(chunk) except Exception as e: LOGGER.error(e)