def _discover_member_licenses(self): if not utils.get_features( self._grid_config.wapi_version).member_licenses: return None return_fields = ['expiry_date', 'hwid', 'kind', 'type'] licenses = self._connector.get_object('member:license', return_fields=return_fields) return licenses
def _discover_config(self, gm_member): return_fields = ["extattrs"] if utils.get_features(self.wapi_version).member_ipv6_setting: return_fields.append("ipv6_setting") obj_type = "member" payload = {"host_name": gm_member["member_name"]} config = self.gm_connector.get_object(obj_type, payload=payload, return_fields=return_fields) return config[0] if config and config[0].get("extattrs") else None
def _discover_member_licenses(self): if not utils.get_features( self._grid_config.wapi_version).member_licenses: return None return_fields = ['expiry_date', 'hwid', 'kind', 'type'] licenses = self._connector.get_object('member:license', return_fields=return_fields) return licenses
def _discover_config(self, gm_member): return_fields = ['extattrs'] if utils.get_features(self.wapi_version).member_ipv6_setting: return_fields.append('ipv6_setting') obj_type = 'member' payload = {'host_name': gm_member['member_name']} config = self.gm_connector.get_object( obj_type, payload=payload, return_fields=return_fields) return config[0] if config and config[0].get('extattrs') else None
def test_get_features(self): feature = utils.get_features('2.3') self.assertTrue(feature.create_ea_def) self.assertTrue(feature.cloud_api) self.assertTrue(feature.member_ipv6_setting) self.assertTrue(feature.member_licenses) self.assertTrue(feature.enable_member_dns) self.assertTrue(feature.enable_member_dhcp) self.assertTrue(feature.dns_settings) self.assertTrue(feature.enable_dhcp) self.assertTrue(feature.tenants)
def _discover_config(self, gm_member): return_fields = ['extattrs'] if utils.get_features(self.wapi_version).member_ipv6_setting: return_fields.append('ipv6_setting') obj_type = 'member' payload = {'host_name': gm_member['member_name']} config = self.gm_connector.get_object(obj_type, payload=payload, return_fields=return_fields) return config[0] if config and config[0].get('extattrs') else None
def create_subnet(self, rollback_list): """Creates subnet equivalent NIOS objects. infoblox context contains subnet dictionary from ipam driver and network from db query because only subnet data is passed The following NIOS objects are created. - network view - network - ip range """ session = self.ib_cxt.context.session network = self.ib_cxt.network subnet = self.ib_cxt.subnet network_id = network.get('id') subnet_id = subnet.get('id') network_view_exists = (True if self.ib_cxt.mapping.network_view_id else False) if self.ib_cxt.mapping.authority_member is None: # after authority member reservation, ib_cxt.mapping is updated and # its connector and managers are loaded for the new member. self.ib_cxt.reserve_authority_member() # create a network view if it does not exist if not network_view_exists: ib_network_view, obj_created = self._create_ib_network_view() if ib_network_view and obj_created: rollback_list.append(ib_network_view) ib_network, created = self._create_ib_network() if ib_network: if created: rollback_list.append(ib_network) self._create_ib_ip_range(rollback_list) # tenats available only with wapi 2.0+ features = utils.get_features(self.grid_config.wapi_version) if features.tenants: ib_tenant = ib_objects.Tenant.search(self.ib_cxt.connector, id=self.ib_cxt.tenant_id) if (ib_tenant and self.ib_cxt.tenant_name and ib_tenant.name != self.ib_cxt.tenant_name): ib_tenant.name = self.ib_cxt.tenant_name ib_tenant.update() # associate the network view to neutron dbi.associate_network_view(session, self.ib_cxt.mapping.network_view_id, network_id, subnet_id) return ib_network
def create_subnet(self, rollback_list): """Creates subnet equivalent NIOS objects. infoblox context contains subnet dictionary from ipam driver and network from db query because only subnet data is passed The following NIOS objects are created. - network view - network - ip range """ session = self.ib_cxt.context.session network = self.ib_cxt.network subnet = self.ib_cxt.subnet network_id = network.get('id') subnet_id = subnet.get('id') network_view_exists = (True if self.ib_cxt.mapping.network_view_id else False) if self.ib_cxt.mapping.authority_member is None: # after authority member reservation, ib_cxt.mapping is updated and # its connector and managers are loaded for the new member. self.ib_cxt.reserve_authority_member() # create a network view if it does not exist if not network_view_exists: ib_network_view = self._create_ib_network_view() rollback_list.append(ib_network_view) ib_network, created = self._create_ib_network() if ib_network: if created: rollback_list.append(ib_network) self._create_ib_ip_range(rollback_list) # tenats available only with wapi 2.0+ features = utils.get_features(self.grid_config.wapi_version) if features.tenants: ib_tenant = ib_objects.Tenant.search(self.ib_cxt.connector, id=self.ib_cxt.tenant_id) if (ib_tenant and self.ib_cxt.tenant_name and ib_tenant.name != self.ib_cxt.tenant_name): ib_tenant.name = self.ib_cxt.tenant_name ib_tenant.update() # associate the network view to neutron dbi.associate_network_view(session, self.ib_cxt.mapping.network_view_id, network_id, subnet_id) return ib_network
def _discover_members(self): return_fields = ['node_info', 'host_name', 'vip_setting', 'extattrs'] # ipv6_setting, lan2_port_setting and mgmt_port_setting fields are # available with wapi 2.2+, so check only 'member_ipv6_setting' feature if utils.get_features( self._grid_config.wapi_version).member_ipv6_setting: return_fields.extend(['ipv6_setting', 'lan2_port_setting', 'mgmt_port_setting']) members = self._connector.get_object('member', return_fields=return_fields) return members
def _discover_members(self): return_fields = ['node_info', 'host_name', 'vip_setting', 'extattrs'] # ipv6_setting, lan2_port_setting and mgmt_port_setting fields are # available with wapi 2.2+, so check only 'member_ipv6_setting' feature if utils.get_features( self._grid_config.wapi_version).member_ipv6_setting: return_fields.extend( ['ipv6_setting', 'lan2_port_setting', 'mgmt_port_setting']) members = self._connector.get_object('member', return_fields=return_fields) return members
def create_ea_defs(grid_id): print("\nCreating EA definitions...") print("-" * PRINT_LINE) print("") credentials = get_credentias() conn = utils.get_connector(credentials) if not (utils.get_features(conn).create_ea_def): LOG.error("WAPI Version '%s' is not supported - Script ABORTED!", conn.wapi_version) exit(1) mgr = object_manager.InfobloxObjectManager(conn) ea_defs_created = mgr.create_required_ea_definitions( const.REQUIRED_EA_DEFS, reraise=True) if ea_defs_created: print("The following EA Definitions have been created: '%s'" % [ea_def['name'] for ea_def in ea_defs_created]) else: print("All the EAs has been already created.") print("\n") grid_opts = config.get_infoblox_grid_opts(grid_id) gm_name = grid_opts['grid_master_name'] member = objects.Member.search(conn, host_name=gm_name) if member is None: LOG.error("Cannot retrieve member information at GM='%s'" % gm_name) exit(1) print("Adding grid configuration EAs to the grid master...") print("-" * PRINT_LINE) print("") ea_set = {} if member.extattrs is None: member.extattrs = objects.EA({}) for ea, val in const.GRID_CONFIG_DEFAULTS.items(): if (member.extattrs.get(ea) is None and not (val is None or val == [])): ea_set[ea] = val member.extattrs.set(ea, val) if ea_set: print("Grid configurations: '%s'" % ea_set) member.update() else: print("All the grid configurations have been already added.") print("\n")
def _discover_dhcp_settings(self): members = {} # enable_dhcp available only with wapi 2.2.1+ features = utils.get_features(self._grid_config.wapi_version) if not features.enable_dhcp: return members return_fields = ['host_name', 'enable_dhcp'] dhcp_members = self._connector.get_object('member:dhcpproperties', return_fields=return_fields) # Convert members into dict with host_name as a key if dhcp_members: return {member['host_name']: member for member in dhcp_members} return members
def _discover_dhcp_settings(self): members = {} # enable_dhcp available only with wapi 2.2.1+ features = utils.get_features(self._grid_config.wapi_version) if not features.enable_dhcp: return members return_fields = ['host_name', 'enable_dhcp'] dhcp_members = self._connector.get_object('member:dhcpproperties', return_fields=return_fields) # Convert members into dict with host_name as a key if dhcp_members: return {member['host_name']: member for member in dhcp_members} return members
def create_ea_defs(grid_id): print("\nCreating EA definitions...") print(("-" * PRINT_LINE)) print("") credentials = get_credentias() conn = utils.get_connector(credentials) if not (utils.get_features(conn).create_ea_def): LOG.error("WAPI Version '%s' is not supported - Script ABORTED!", conn.wapi_version) exit(1) mgr = object_manager.InfobloxObjectManager(conn) ea_defs_created = mgr.create_required_ea_definitions( const.REQUIRED_EA_DEFS, reraise=True) if ea_defs_created: print(("The following EA Definitions have been created: '%s'" % [ea_def['name'] for ea_def in ea_defs_created])) else: print("All the EAs has been already created.") print("\n") grid_opts = config.get_infoblox_grid_opts(grid_id) gm_name = grid_opts['grid_master_name'] member = objects.Member.search(conn, host_name=gm_name) if member is None: LOG.error("Cannot retrieve member information at GM='%s'" % gm_name) exit(1) print("Adding grid configuration EAs to the grid master...") print(("-" * PRINT_LINE)) print("") ea_set = {} if member.extattrs is None: member.extattrs = objects.EA({}) for ea, val in list(const.GRID_CONFIG_DEFAULTS.items()): if (member.extattrs.get(ea) is None and not (val is None or val == [])): ea_set[ea] = val member.extattrs.set(ea, val) if ea_set: print(("Grid configurations: '%s'" % ea_set)) member.update() else: print("All the grid configurations have been already added.") print("\n")
def _discover_dns_settings(self): members = {} # all this info available only with wapi 2.3+ features = utils.get_features(self._grid_config.wapi_version) if not features.dns_settings: return members return_fields = ['host_name', 'use_mgmt_port', 'use_mgmt_ipv6_port', 'use_lan_port', 'use_lan_ipv6_port', 'use_lan2_port', 'use_lan2_ipv6_port', 'additional_ip_list'] dns_members = self._connector.get_object('member:dns', return_fields=return_fields) # Convert members into dict with host_name as a key if dns_members: return {member['host_name']: member for member in dns_members} return members
def _discover_dns_settings(self): members = {} # all this info available only with wapi 2.3+ features = utils.get_features(self._grid_config.wapi_version) if not features.dns_settings: return members return_fields = [ 'host_name', 'use_mgmt_port', 'use_mgmt_ipv6_port', 'use_lan_port', 'use_lan_ipv6_port', 'use_lan2_port', 'use_lan2_ipv6_port', 'additional_ip_list' ] dns_members = self._connector.get_object('member:dns', return_fields=return_fields) # Convert members into dict with host_name as a key if dns_members: return {member['host_name']: member for member in dns_members} return members
def wapi_version(self, value): self._wapi_version = value if value: self._is_cloud_wapi =\ utils.get_features(self.wapi_version).cloud_api
def wapi_version(self, value): self._wapi_version = value if value: self._is_cloud_wapi =\ utils.get_features(self.wapi_version).cloud_api