def get(cls, id): conf = sys_util().get_sys_conf() db = FactoryAgent().get_agent(conf['database_manager']) try: topology = db.get_by_id(Topology, id) except NotFoundException as e: raise e return topology
def create(cls, service_args): try: conf = sys_util().get_sys_conf() service_manager = FactoryAgent().get_agent(conf['service_manager']) service = service_manager.create(service_args) checker = FactoryAgent().get_agent(conf['checker']) checker.check(service=service) db = DatabaseManager() db.persist(service) except Exception, msg: raise
def create(cls, service_args): try: conf = sys_util().get_sys_conf() service_manager = FactoryAgent().get_agent(conf["service_manager"]) service = service_manager.create(service_args) checker = FactoryAgent().get_agent(conf["checker"]) checker.check(service=service) db = DatabaseManager() db.persist(service) except Exception, msg: raise
def create(cls, topology_args): conf = sys_util().get_sys_conf() db = FactoryAgent().get_agent(conf['database_manager']) topology_manager = FactoryAgent().get_agent(conf['topology_manager']) try: topology = topology_manager.create(topology_args) checker = FactoryAgent().get_agent(conf['checker']) checker.check(topology=topology) db.persist(topology) except Exception, exc: LOG.exception(exc.message) raise
def create(cls, secgroup_args): _sec_rules = secgroup_args.get("rules") _new_sec_rules = [] for _sec_rule_args in _sec_rules: _new_sec_rule = Rule(**_sec_rule_args) _new_sec_rules.append(_new_sec_rule) new_secgroup = SecurityGroup(name=secgroup_args.get('name'), rules=_new_sec_rules) conf = sys_util().get_sys_conf() checker = FactoryAgent().get_agent(conf['checker']) checker.check(security_group=new_secgroup) db = DatabaseManager() db.persist(new_secgroup) return new_secgroup
def update(cls, service_args, id): db = DatabaseManager() try: updated_service = db.get_by_id(Service, id) except NotFoundException as e: raise e updated_service.config = service_args.get('config') or updated_service.config updated_service.flavor = service_args.get('flavor') or updated_service.flavor updated_service.image = service_args.get('image') or updated_service.image updated_service.service_type = service_args.get('service_type') or updated_service.service_type updated_service.size = service_args.get('size') or updated_service.size conf = sys_util().get_sys_conf() checker = FactoryAgent().get_agent(conf['checker']) checker.check(service=updated_service) db.update(updated_service) return updated_service
def update(cls, service_args, id): db = DatabaseManager() try: updated_service = db.get_by_id(Service, id) except NotFoundException as e: raise e updated_service.config = service_args.get("config") or updated_service.config updated_service.flavor = service_args.get("flavor") or updated_service.flavor updated_service.image = service_args.get("image") or updated_service.image updated_service.service_type = service_args.get("service_type") or updated_service.service_type updated_service.size = service_args.get("size") or updated_service.size conf = sys_util().get_sys_conf() checker = FactoryAgent().get_agent(conf["checker"]) checker.check(service=updated_service) db.update(updated_service) return updated_service
def __init__(self, token, tenant_name): """ Constructor """ super(SoExecution, self).__init__(token, tenant_name) # by default self.topology_type = "topology-maas-bern.json" self.token = token self.tenant_name = tenant_name self.stack_id = None self.maas = None self.location = 'bern' # make sure we can talk to deployer... LOG.debug("sending request to the url %s" % os.environ['DESIGN_URI']) self.conf = sys_util().get_sys_conf() LOG.debug("instantiating deployer %s" % self.conf['deployer']) self.deployer = None
def __init__(self, token, tenant_name): """ Constructor """ super(SoExecution, self).__init__(token, tenant_name) # by default self.topology_type = "topology-maas-bern.json" self.token = token self.tenant_name = tenant_name self.stack_id = None self.maas = None self.location = 'bern' # make sure we can talk to deployer... LOG.debug("sending request to the url %s" % os.environ['DESIGN_URI']) self.conf = sys_util().get_sys_conf() LOG.debug("instantiating deployer %s" %self.conf['deployer']) self.deployer = None
def update(cls, new_topology_args, old_topology): conf = sys_util().get_sys_conf() db = FactoryAgent().get_agent(conf['database_manager']) topology_manager = FactoryAgent().get_agent(conf['topology_manager']) checker = FactoryAgent().get_agent(conf['checker']) if old_topology.state in ['DEPLOYED','UPDATED']: old_topology.state = 'UPDATING' else: raise ActionInProgressException('Cannot update topology while another action is in progress. Topology state is \"%s\".' % old_topology.state) db.update(old_topology) try: new_topology = topology_manager.create(new_topology_args) checker.check(topology=new_topology) updated_topology = topology_manager.update(new_topology, old_topology) #checker.check(topology=updated_topology) db.update(updated_topology) except Exception, exc: LOG.exception(exc.message) raise exc
def update(self, new_topology, old_topology): conf = sys_util().get_sys_conf() db = FactoryAgent().get_agent(conf['database_manager']) updated_topology = old_topology updated_topology.name = new_topology.name #check for additional service instances and add them to the list of new instances appended_service_instances = [] for new_service_instance in new_topology.service_instances: is_found = False for updated_service_instance in updated_topology.service_instances: if new_service_instance.name == updated_service_instance.name: is_found = True break if not is_found: appended_service_instances.append(new_service_instance) #check for removed service instances and add it to the list of removed instances removed_service_instances = [] for updated_service_instance in updated_topology.service_instances: is_found = False for new_service_instance in new_topology.service_instances: if new_service_instance.name == updated_service_instance.name: is_found = True break if not is_found: removed_service_instances.append(updated_service_instance) #remove removed service instances for removed_service_instance in removed_service_instances: updated_topology.service_instances.remove(removed_service_instance) LOG.debug('Removed ServiceInstance \"%s\" from Topology \"%s\".' % (removed_service_instance.name, updated_topology.name)) #append additional service instances for appended_service_instance in appended_service_instances: appended_service_instance.topology_id = updated_topology.id updated_topology.service_instances.append( appended_service_instance) if appended_service_instance.policies is not None: for policy in appended_service_instance.policies: db.persist(policy) db.persist(appended_service_instance) LOG.debug('Appended ServiceInstance \"%s\" to Topology \"%s\".' % (appended_service_instance.name, updated_topology.name)) #Update all values for each service instance for updated_service_instance in updated_topology.service_instances: for new_service_instance in new_topology.service_instances: if updated_service_instance.name == new_service_instance.name: updated_service_instance.size = new_service_instance.size updated_service_instance.configuration = new_service_instance.configuration updated_service_instance.policies = new_service_instance.policies #updated_service_instance.service_type = new_service_instance.service_type if new_service_instance.service_type and updated_service_instance.service_type != new_service_instance.service_type: LOG.warning( "Cannot update service_type for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name)) if new_service_instance.adapter and updated_service_instance.adapter != new_service_instance.adapter: LOG.warning( "Cannot update adapter for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name)) #updated_service_instance.flavor = new_service_instance.flavor if new_service_instance.flavor and updated_service_instance.flavor.name != new_service_instance.flavor.name: LOG.warning( "Cannot update flavor for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name)) #updated_service_instance.image = new_service_instance.image if new_service_instance.image and updated_service_instance.image.name != new_service_instance.image.name: LOG.warning( "Cannot update image for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name)) #updated_service_instance.networks = new_service_instance.networks if new_service_instance.networks is not None: LOG.warning( "Cannot update networks for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name)) #updated_service_instance.requirements = new_service_instance.requirements if new_service_instance.requirements is not None: LOG.warning( "Cannot update networks for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name)) #updated_service_instance.user_data = new_service_instance.user_data if new_service_instance.user_data is not None: LOG.warning( "Cannot update user_data for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name)) if new_service_instance.key and updated_service_instance.key.name != new_service_instance.key.name: LOG.warning( "Cannot update key for %s->%s without replacement." % (updated_topology.name, updated_service_instance.name)) #Add or remove units according to minimal or maximal size for updated_service_instance in updated_topology.service_instances: if updated_service_instance not in appended_service_instances: if len(updated_service_instance.units ) < updated_service_instance.size.get('min'): for i in range( updated_service_instance.size.get('min') - len(updated_service_instance.units)): _hostname = '%s-%s' % ( updated_service_instance.name, str(len(updated_service_instance.units) + 1)) _state = 'DEFINED' new_unit = Unit(hostname=_hostname, state=_state) new_unit.service_instance_id = updated_service_instance.id updated_service_instance.units.append(new_unit) db.persist(new_unit) if len(updated_service_instance.units ) > updated_service_instance.size.get('max'): for i in range( len(updated_service_instance.units) - updated_service_instance.size.get('max')): removed_unit = updated_service_instance.units.pop( len(updated_service_instance.units) - 1) db.remove(removed_unit) return updated_topology
def update(self, new_topology, old_topology): conf = sys_util().get_sys_conf() db = FactoryAgent().get_agent(conf['database_manager']) updated_topology = old_topology updated_topology.name = new_topology.name #check for additional service instances and add them to the list of new instances appended_service_instances = [] for new_service_instance in new_topology.service_instances: is_found = False for updated_service_instance in updated_topology.service_instances: if new_service_instance.name == updated_service_instance.name: is_found = True break if not is_found: appended_service_instances.append(new_service_instance) #check for removed service instances and add it to the list of removed instances removed_service_instances = [] for updated_service_instance in updated_topology.service_instances: is_found = False for new_service_instance in new_topology.service_instances: if new_service_instance.name == updated_service_instance.name: is_found = True break if not is_found: removed_service_instances.append(updated_service_instance) #remove removed service instances for removed_service_instance in removed_service_instances: updated_topology.service_instances.remove(removed_service_instance) logger.debug('Removed ServiceInstance \"%s\" from Topology \"%s\".' % (removed_service_instance.name, updated_topology.name)) #append additional service instances for appended_service_instance in appended_service_instances: appended_service_instance.topology_id = updated_topology.id updated_topology.service_instances.append(appended_service_instance) if appended_service_instance.policies is not None: for policy in appended_service_instance.policies: db.persist(policy) db.persist(appended_service_instance) logger.debug('Appended ServiceInstance \"%s\" to Topology \"%s\".' % (appended_service_instance.name, updated_topology.name)) #Update all values for each service instance for updated_service_instance in updated_topology.service_instances: for new_service_instance in new_topology.service_instances: if updated_service_instance.name == new_service_instance.name: updated_service_instance.size = new_service_instance.size updated_service_instance.configuration = new_service_instance.configuration updated_service_instance.policies = new_service_instance.policies #updated_service_instance.service_type = new_service_instance.service_type if new_service_instance.service_type and updated_service_instance.service_type != new_service_instance.service_type: logger.warning("Cannot update service_type for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name)) if new_service_instance.adapter and updated_service_instance.adapter != new_service_instance.adapter: logger.warning("Cannot update adapter for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name)) #updated_service_instance.flavor = new_service_instance.flavor if new_service_instance.flavor and updated_service_instance.flavor.name != new_service_instance.flavor.name: logger.warning("Cannot update flavor for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name)) #updated_service_instance.image = new_service_instance.image if new_service_instance.image and updated_service_instance.image.name != new_service_instance.image.name: logger.warning("Cannot update image for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name)) #updated_service_instance.networks = new_service_instance.networks if new_service_instance.networks is not None: logger.warning("Cannot update networks for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name)) #updated_service_instance.requirements = new_service_instance.requirements if new_service_instance.requirements is not None: logger.warning("Cannot update networks for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name)) #updated_service_instance.user_data = new_service_instance.user_data if new_service_instance.user_data is not None: logger.warning("Cannot update user_data for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name)) if new_service_instance.key and updated_service_instance.key.name != new_service_instance.key.name: logger.warning("Cannot update key for %s->%s without replacement." % (updated_topology.name, updated_service_instance.name)) #Add or remove units according to minimal or maximal size for updated_service_instance in updated_topology.service_instances: if updated_service_instance not in appended_service_instances: if len(updated_service_instance.units) < updated_service_instance.size.get('min'): for i in range(updated_service_instance.size.get('min') - len(updated_service_instance.units)): _hostname = '%s-%s' % ( updated_service_instance.name, str(len(updated_service_instance.units) + 1)) _state = 'DEFINED' new_unit = Unit(hostname=_hostname, state=_state) new_unit.service_instance_id = updated_service_instance.id updated_service_instance.units.append(new_unit) db.persist(new_unit) if len(updated_service_instance.units) > updated_service_instance.size.get('max'): for i in range(len(updated_service_instance.units) - updated_service_instance.size.get('max')): removed_unit = updated_service_instance.units.pop(len(updated_service_instance.units) - 1) db.remove(removed_unit) return updated_topology
def get_all(cls): conf = sys_util().get_sys_conf() db = FactoryAgent().get_agent(conf['database_manager']) lst = db.get_all(Topology) return lst
def delete(cls, topology): conf = sys_util().get_sys_conf() db = FactoryAgent().get_agent(conf['database_manager']) db.remove(topology) return topology