def add_entity(self, name, entity_id, entityType, parent): try: type = DBHelper().find_by_name(EntityType, entityType) e = Entity() e.name = name e.type = type e.entity_id = entity_id e.parent = parent DBHelper().add(e) except Exception as e: raise e return e
def create_vmw_datacenter(self, auth, name, actual_name, moid, vcenter_id, parent_ent=None): msg = '' entityType = to_unicode(constants.DATA_CENTER) dc = None update_name = False dc_ent = auth.get_entity_by_entity_attributes(self.get_entity_attributes_dict(vcenter_id, moid), entityType) if not dc_ent: dup_ent = auth.get_entity_by_name(name, entityType=entityType) if dup_ent: msg += '\nERROR: Could not import Datacenter:%s. It is already exist,please choose different name' % name return (msg, None, None) if dc_ent: update_name = self.can_update_managed_object_name(auth, name, actual_name, dc_ent.name) msg += '\nDatacenter: %s already exist' % name dc = DBSession.query(VMWDatacenter).filter(VMWDatacenter.id == dc_ent.entity_id).first() if dc: if update_name: dc.name = name if not dc: msg += '\nCreating Datacenter: %s' % name dc = VMWDatacenter(name) DBSession.add(dc) if not dc_ent: dc_ent = Entity() dc_ent.name = dc.name dc_ent.entity_id = dc.id dc_ent.type_id = 1 ent_cntx_dict = self.get_entity_context_dict(external_manager_id=vcenter_id, external_id=moid) dc_ent.context_id = auth.add_context(ent_cntx_dict) DBSession.add(dc_ent) admin_role = auth.get_admin_role() auth.make_rep_entry(admin_role, dc_ent) ent_attr_dict = self.get_entity_attributes_dict(external_manager_id=vcenter_id, external_id=moid) self.add_entity_attributes(dc_ent, ent_attr_dict) else: if not update_name: name = None auth.update_entity(dc_ent, name=name) return (msg, dc, dc_ent)