def acquire_linode_ips(self): linodeutils.log_info('Getting info for Linodes from display group: ' + self.node_display_group) deis_grp = self.request('linode.list') deis_linodeids = [l.get('LINODEID','') for l in deis_grp if l.get('LPM_DISPLAYGROUP', '') == self.node_display_group] deis_grp_ips = self.request('linode.ip.list') self.deis_privateips = [ip.get('IPADDRESS','') for ip in deis_grp_ips if (ip.get('LINODEID','') in deis_linodeids) and (ip.get('ISPUBLIC', 1) == 0)] self.deis_publicips = [ip.get('IPADDRESS','') for ip in deis_grp_ips if (ip.get('LINODEID','') in deis_linodeids) and (ip.get('ISPUBLIC', 0) == 1)]
def get_discovery_url_from_user_data(self): name = 'linode-user-data.yaml' linodeutils.log_info('Loading discovery url from ' + name) try: user_data_file = linodeutils.get_file(name) user_data_yaml = yaml.safe_load(user_data_file) return user_data_yaml['coreos']['etcd2']['discovery'] except: raise IOError('Could not load discovery url from ' + name)
def acquire_linode_ips(self): linodeutils.log_info('Getting info for Linodes from display group: ' + self.node_display_group) deis_grp = self.request('linode.list') deis_linodeids = [ l.get('LINODEID', '') for l in deis_grp if l.get('LPM_DISPLAYGROUP', '') == self.node_display_group ] deis_grp_ips = self.request('linode.ip.list') self.deis_privateips = [ ip.get('IPADDRESS', '') for ip in deis_grp_ips if (ip.get('LINODEID', '') in deis_linodeids) and ( ip.get('ISPUBLIC', 1) == 0) ] self.deis_publicips = [ ip.get('IPADDRESS', '') for ip in deis_grp_ips if (ip.get('LINODEID', '') in deis_linodeids) and ( ip.get('ISPUBLIC', 0) == 1) ]
def run(self): #NOTE: defaults to using display group, then manual input (via nodes/hosts), then discovery_url if self.node_display_group: self.acquire_linode_ips() nodes = self.deis_privateips hosts = self.deis_publicips else: nodes = self.nodes if self.nodes is not None else self.get_nodes_from_args( ) hosts = self.hosts if self.hosts is not None else nodes node_ips = [] for ip in nodes: if self.validate_ip_address(ip): node_ips.append(ip) else: linodeutils.log_warning( 'Invalid IP will not be added to security group: ' + ip) if not len(node_ips) > 0: raise ValueError('No valid IP addresses in security group.') host_ips = [] for ip in hosts: if self.validate_ip_address(ip): host_ips.append(ip) else: linodeutils.log_warning('Host has invalid IP address: ' + ip) if not len(host_ips) > 0: raise ValueError('No valid host addresses.') linodeutils.log_info('Generating iptables rules...') rules = self.get_firewall_contents(node_ips) linodeutils.log_success('Generated rules:') linodeutils.log_debug(rules) linodeutils.log_info('Applying rules...') self.apply_rules_to_all(host_ips, rules) linodeutils.log_success('Done!')
def run(self): #NOTE: defaults to using display group, then manual input (via nodes/hosts), then discovery_url if self.node_display_group: self.acquire_linode_ips() nodes = self.deis_privateips hosts = self.deis_publicips else: nodes = self.nodes if self.nodes is not None else self.get_nodes_from_args() hosts = self.hosts if self.hosts is not None else nodes node_ips = [] for ip in nodes: if self.validate_ip_address(ip): node_ips.append(ip) else: linodeutils.log_warning('Invalid IP will not be added to security group: ' + ip) if not len(node_ips) > 0: raise ValueError('No valid IP addresses in security group.') host_ips = [] for ip in hosts: if self.validate_ip_address(ip): host_ips.append(ip) else: linodeutils.log_warning('Host has invalid IP address: ' + ip) if not len(host_ips) > 0: raise ValueError('No valid host addresses.') linodeutils.log_info('Generating iptables rules...') rules = self.get_firewall_contents(node_ips) linodeutils.log_success('Generated rules:') linodeutils.log_debug(rules) linodeutils.log_info('Applying rules...') self.apply_rules_to_all(host_ips, rules) linodeutils.log_success('Done!')
def generate_etcd_token(): linodeutils.log_info("Generating new Etcd token...") data = requests.get("https://discovery.etcd.io/new").text token = data.replace("https://discovery.etcd.io/", "") linodeutils.log_success("Generated new token: " + token) return token
def generate_etcd_token(): linodeutils.log_info('Generating new Etcd token...') data = requests.get('https://discovery.etcd.io/new').text token = data.replace('https://discovery.etcd.io/', '') linodeutils.log_success('Generated new token: ' + token) return token