示例#1
0
    def test_active_agreement_detection(self):
        """
		   Check that the temp agreement is detected as active agreement.
		"""

        gold = core_model.Mixin('', 'gold', [occi_sla.AGREEMENT_TEMPLATE])
        compute = core_model.Mixin('', 'compute',
                                   [occi_sla.AGREEMENT_TEMPLATE])
        availability = core_model.Mixin('', 'availability',
                                        [occi_sla.AGREEMENT_TEMPLATE])
        mixins = [gold, compute, availability]
        res = core_model.Resource(self.id, occi_sla.AGREEMENT, mixins)
        res.attributes = {
            'occi.agreement.state': 'accepted',
            'occi.agreement.effectiveFrom': '2014-11-02T02:20:26+00:00',
            'occi.agreement.effectiveUntil': '2015-11-02T02:20:27+00:00'
        }

        northbound_api = api.build()
        resources = EntityDictionary(northbound_api.registry)
        resources[self.id] = res

        resources.registry.populate_resources()

        active_agreements = resources.registry.get_active_agreement_resources()

        if active_agreements.__len__() == 1:
            self.assertEqual(active_agreements[0].identifier, self.id)
        else:
            for agr in active_agreements:
                self.assertTrue(agr.identifier == self.id)
示例#2
0
    def test_past_agreement_non_detection(self):
        """
		   Check that the temp agreement with pending state is not detected as active agreement.
		"""

        gold = core_model.Mixin('', 'gold', [occi_sla.AGREEMENT_TEMPLATE])
        compute = core_model.Mixin('', 'compute',
                                   [occi_sla.AGREEMENT_TEMPLATE])
        availability = core_model.Mixin('', 'availability',
                                        [occi_sla.AGREEMENT_TEMPLATE])
        mixins = [gold, compute, availability]
        res = core_model.Resource(self.id, occi_sla.AGREEMENT, mixins)
        res.attributes = {
            'occi.agreement.state': 'accepted',
            'occi.agreement.effectiveFrom': '2014-10-02T02:20:26+00:00',
            'occi.agreement.effectiveUntil': '2014-11-02T02:20:27+00:00'
        }

        northbound_api = api.build()
        resources = EntityDictionary(northbound_api.registry)
        resources[self.id] = res
        resources.registry.populate_resources()

        active_agreements = resources.registry.get_active_agreement_resources()

        self.assertEqual(active_agreements.__len__(), 0)
示例#3
0
    def test_no_policy_creation(self):
        """
			Check that if no link (aka device id) exist, no policy is created
		"""
        gold = core_model.Mixin('', 'gold', [occi_sla.AGREEMENT_TEMPLATE])
        compute = core_model.Mixin('', 'compute',
                                   [occi_sla.AGREEMENT_TEMPLATE])
        availability = core_model.Mixin('', 'availability',
                                        [occi_sla.AGREEMENT_TEMPLATE])
        mixins = [gold, compute, availability]
        res = core_model.Resource(self.id, occi_sla.AGREEMENT, mixins)
        res.attributes = {
            'occi.agreement.state': 'accepted',
            'occi.agreement.effectiveFrom': '2014-11-02T02:20:26+00:00',
            'occi.agreement.effectiveUntil': '2015-11-02T02:20:27+00:00'
        }

        northbound_api = api.build()
        resources = EntityDictionary(northbound_api.registry)
        resources[self.id] = res

        resources.registry.populate_resources()

        myrulesengine = rulesengine.RulesEngine(resources.registry)
        myrulesengine.active_policies = {}
        myrulesengine.active_agreements = {}
        # myrulesengine.registry=registry

        myrulesengine.start_engine(0)

        temp_policy_record = DB.policies.find({'agreement_id': self.id},
                                              {'_id': 0})

        self.assertEqual(temp_policy_record.count(), 0)
示例#4
0
    def test_policy_creation(self):
        """
			Check that an active agreement has been detected and a record inserted into the database
		"""
        availability = core_model.Mixin('', 'availability',
                                        [occi_sla.AGREEMENT_TEMPLATE])
        mixins = [availability]
        res = core_model.Resource(self.id, occi_sla.AGREEMENT, mixins)
        res.attributes = {
            'occi.agreement.state': 'accepted',
            'occi.agreement.effectiveFrom': '2014-11-02T02:20:26+00:00',
            'occi.agreement.effectiveUntil': '2015-11-02T02:20:27+00:00'
        }

        comp_res = core_model.Resource(self.compute_id, infrastructure.COMPUTE,
                                       [])
        comp_res.attributes = {}

        link_res = core_model.Link(self.link_id, occi_sla.AGREEMENT_LINK, [],
                                   res, comp_res)
        link_res.attributes = {}

        res.links = [link_res]

        northbound_api = api.build()
        resources = EntityDictionary(northbound_api.registry)
        resources[self.id] = res
        resources[self.compute_id] = comp_res
        resources[self.link_id] = link_res

        resources.registry.populate_resources()

        myrulesengine = rulesengine.RulesEngine(resources.registry)
        myrulesengine.active_policies = {}
        myrulesengine.active_agreements = {}

        myrulesengine.start_engine(0)

        temp_policy_record = DB.policies.find({'agreement_id': self.id},
                                              {'_id': 0})

        self.assertEqual(temp_policy_record.count(), 1)
示例#5
0
# Network security rule extension to specify firewall rules
_SEC_RULE_ATTRIBUTES = {
    'occi.network.security.protocol': '',
    'occi.network.security.to': '',
    'occi.network.security.from': '',
    'occi.network.security.range': '',
}
SEC_RULE = core_model.Kind(
    'http://schemas.openstack.org/occi/infrastructure/network/security#',
    'rule', [core_model.Resource.kind], None, 'Network security rule kind',
    _SEC_RULE_ATTRIBUTES, '/network/security/rule/')

# Network security rule group
SEC_GROUP = core_model.Mixin(
    'http://schemas.ogf.org/occi/infrastructure/security#',
    'group',
    attributes=None)

# OS change adminstrative password action
_OS_CHG_PWD_ATTRIBUTES = {
    'org.openstack.credentials.admin_pwd': '',
}
OS_CHG_PWD = core_model.Action('http://schemas.openstack.org/instance/action#',
                               'chg_pwd', 'Changes Admin password.',
                               _OS_CHG_PWD_ATTRIBUTES)

# OS create image from VM action
_OS_CREATE_IMAGE_ATTRIBUTES = {
    'org.openstack.snapshot.image_name': '',
}
OS_CREATE_IMAGE = core_model.Action(