def instances_rm(region_id, device, instances, images, instance_states, region_conn): ''' Return instances RelationshipMap given region_id and an InstanceInfo ResultSet. ''' instance_data = [] image_filters = [] for instance in instances: image_filters.append(instance.image_id) if image_filters: data = region_conn.get_all_images(image_ids=image_filters) images.extend(data) image_ids = [x.id for x in images] for instance in instances: data = get_instance_data(instance, image_ids) data.update({ 'guest': check_tag(device.zAWSDiscover, instance.tags), 'pem_path': path_to_pem(region_id, device.zAWSRegionPEM), }) instance_states[data['id']] = prodState(data['state']) instance_data.append(data) return RelationshipMap( compname='regions/%s' % region_id, relname='instances', modname=MODULE_NAME['EC2Instance'], objmaps=instance_data )
def create_guest(self, state='running'): ''' Create guest device for this instance if it doesn't already exist. ''' if not self.guest: return # Create guest device only if it was not created before if self._has_guest: return deviceclass = self.guest_deviceclass() if not deviceclass: return manage_ip = self.guest_manage_ip() if not manage_ip: return collector = self.guest_collector() if not collector: return if self.guest_device(): return LOG.info( 'instance %s running. Discovering guest device', self.titleOrId()) device = deviceclass.createInstance(self.id) device.title = self.title device.setManageIp(manage_ip) device.setPerformanceMonitor(collector.id) device.setProdState(prodState(self.state.lower())) device.setZenProperty('zKeyPath', self.pem_path) device.index_object() notify(IndexingEvent(device)) # Schedule a modeling job for the new device. device.collectDevice(setlog=False, background=True) self._has_guest = True
def get_instances_relmap(region_id, ds, instances, images, instance_states, region_conn): """ Return instances RelationshipMap given region_id and an InstanceInfo ResultSet. """ image_filters = [i.image_id for i in instances] if image_filters: try: image_data = yield region_conn.get_all_images( image_ids=image_filters) except Exception as e: log.warning("Unable to retrieve image data for " "plugin: %s, template: %s, datasource: %s, " "device: %s, component: %s, %s", ds.plugin_classname, ds.template, ds.datasource, ds.device, ds.component, str(e)) else: images.extend(image_data) instance_data = [] image_ids = [x.id for x in images] for instance in instances: data = get_instance_data(instance, image_ids) data.update({ 'guest': check_tag(ds.zAWSDiscover, instance.tags), 'pem_path': path_to_pem(region_id, ds.zAWSRegionPEM), }) instance_states[data['id']] = prodState(data['state']) instance_data.append(data) defer.returnValue( RelationshipMap( compname='regions/%s' % region_id, relname='instances', modname=MODULE_NAME['EC2Instance'], objmaps=instance_data ) )
def reserved_instances_rm(region_id, reserved_instances, instance_states): obj_map = [] for ri in reserved_instances: # ZEN-17556: Ignore reserved instances with a None id. if ri.id is None: continue obj_map.append({ 'id': prepId(ri.id), 'title': ri.id, 'reserved_instance_id': ri.id, 'instance_type': ri.instance_type, 'state': ri.state, }) instance_states[prepId(ri.id)] = prodState(ri.state) return RelationshipMap( compname='regions/%s' % region_id, relname='reserved_instances', modname=MODULE_NAME['EC2ReservedInstance'], objmaps=obj_map )