コード例 #1
0
ファイル: test_nodegroup.py プロジェクト: cloudbase/maas
def make_dhcp_settings():
    """Return an arbitrary dict of DHCP settings."""
    network = factory.getRandomNetwork()
    return network, {
        'interface': factory.make_name('interface'),
        'subnet_mask': unicode(network.netmask),
        'broadcast_ip': unicode(network.broadcast),
        'router_ip': factory.getRandomIPInNetwork(network),
        'ip_range_low': factory.getRandomIPInNetwork(network),
        'ip_range_high': factory.getRandomIPInNetwork(network),
    }
コード例 #2
0
ファイル: test_nodegroup.py プロジェクト: cloudbase/maas
def make_dhcp_settings():
    """Return an arbitrary dict of DHCP settings."""
    network = factory.getRandomNetwork()
    return network, {
        'interface': factory.make_name('interface'),
        'subnet_mask': unicode(network.netmask),
        'broadcast_ip': unicode(network.broadcast),
        'router_ip': factory.getRandomIPInNetwork(network),
        'ip_range_low': factory.getRandomIPInNetwork(network),
        'ip_range_high': factory.getRandomIPInNetwork(network),
        }
コード例 #3
0
ファイル: test_forms.py プロジェクト: deepakhajare/maas
def make_interface_settings():
    """Create a dict of arbitrary interface configuration parameters."""
    network = factory.getRandomNetwork()
    return {
        'ip': factory.getRandomIPInNetwork(network),
        'interface': factory.make_name('interface'),
        'subnet_mask': str(network.netmask),
        'broadcast_ip': str(network.broadcast),
        'router_ip': factory.getRandomIPInNetwork(network),
        'ip_range_low': factory.getRandomIPInNetwork(network),
        'ip_range_high': factory.getRandomIPInNetwork(network),
        'management': factory.getRandomEnum(NODEGROUPINTERFACE_MANAGEMENT),
    }
コード例 #4
0
ファイル: test_utils.py プロジェクト: deepakhajare/maas
 def test_find_nodegroup_looks_up_only_configured_interfaces(self):
     network = IPNetwork("192.168.41.0/24")
     factory.make_node_group(
         network=network,
         management=NODEGROUPINTERFACE_MANAGEMENT.UNMANAGED)
     ip = factory.getRandomIPInNetwork(network)
     self.assertIsNone(find_nodegroup(get_request(ip)))
コード例 #5
0
ファイル: test_dns.py プロジェクト: cloudbase/maas
 def test_add_nodegroup_creates_DNS_zone(self):
     self.patch(settings, "DNS_CONNECT", True)
     network = IPNetwork('192.168.7.1/24')
     ip = factory.getRandomIPInNetwork(network)
     nodegroup = factory.make_node_group(
         network=network,
         status=NODEGROUP_STATUS.ACCEPTED,
         management=NODEGROUPINTERFACE_MANAGEMENT.DHCP_AND_DNS)
     self.assertDNSMatches(generated_hostname(ip), nodegroup.name, ip)
コード例 #6
0
ファイル: test_nodegroup.py プロジェクト: cloudbase/maas
 def test_new_creates_nodegroup_with_given_dhcp_settings(self):
     name = factory.make_name('nodegroup')
     uuid = factory.make_name('uuid')
     dhcp_network, dhcp_settings = make_dhcp_settings()
     ip = factory.getRandomIPInNetwork(dhcp_network)
     nodegroup = NodeGroup.objects.new(name, uuid, ip, **dhcp_settings)
     nodegroup = reload_object(nodegroup)
     interface = get_one(nodegroup.nodegroupinterface_set.all())
     self.assertEqual(name, nodegroup.name)
     self.assertThat(interface,
                     MatchesStructure.byEquality(**dhcp_settings))
コード例 #7
0
ファイル: test_nodegroup.py プロジェクト: cloudbase/maas
 def test_new_creates_nodegroup_with_given_dhcp_settings(self):
     name = factory.make_name('nodegroup')
     uuid = factory.make_name('uuid')
     dhcp_network, dhcp_settings = make_dhcp_settings()
     ip = factory.getRandomIPInNetwork(dhcp_network)
     nodegroup = NodeGroup.objects.new(name, uuid, ip, **dhcp_settings)
     nodegroup = reload_object(nodegroup)
     interface = get_one(nodegroup.nodegroupinterface_set.all())
     self.assertEqual(name, nodegroup.name)
     self.assertThat(
         interface, MatchesStructure.byEquality(**dhcp_settings))
コード例 #8
0
ファイル: test_api.py プロジェクト: deepakhajare/maas
 def test_anonymous_get_enlist_preseed_detects_request_origin(self):
     ng_url = 'http://%s' % factory.make_name('host')
     network = IPNetwork("10.1.1/24")
     ip = factory.getRandomIPInNetwork(network)
     factory.make_node_group(maas_url=ng_url, network=network)
     anon_enlist_preseed_url = reverse(
         'metadata-enlist-preseed', args=['latest'])
     response = self.client.get(
         anon_enlist_preseed_url, {'op': 'get_enlist_preseed'},
         REMOTE_ADDR=ip)
     self.assertThat(response.content, Contains(ng_url))
コード例 #9
0
ファイル: test_dns.py プロジェクト: cloudbase/maas
 def test_delete_nodegroup_disables_DNS_zone(self):
     self.patch(settings, "DNS_CONNECT", True)
     network = IPNetwork('192.168.7.1/24')
     ip = factory.getRandomIPInNetwork(network)
     nodegroup = factory.make_node_group(
         network=network,
         status=NODEGROUP_STATUS.ACCEPTED,
         management=NODEGROUPINTERFACE_MANAGEMENT.DHCP_AND_DNS)
     nodegroup.delete()
     self.assertEqual([''], self.dig_resolve(generated_hostname(ip)))
     self.assertEqual([''], self.dig_reverse_resolve(ip))
コード例 #10
0
 def test_anonymous_get_enlist_preseed_detects_request_origin(self):
     ng_url = 'http://%s' % factory.make_name('host')
     network = IPNetwork("10.1.1/24")
     ip = factory.getRandomIPInNetwork(network)
     factory.make_node_group(maas_url=ng_url, network=network)
     anon_enlist_preseed_url = reverse('metadata-enlist-preseed',
                                       args=['latest'])
     response = self.client.get(anon_enlist_preseed_url,
                                {'op': 'get_enlist_preseed'},
                                REMOTE_ADDR=ip)
     self.assertThat(response.content, Contains(ng_url))
コード例 #11
0
 def test_get_userdata_detects_request_origin(self):
     nodegroup_url = 'http://%s' % factory.make_name('host')
     maas_url = 'http://%s' % factory.make_hostname()
     self.patch(settings, 'DEFAULT_MAAS_URL', maas_url)
     network = IPNetwork("10.1.1/24")
     ip = factory.getRandomIPInNetwork(network)
     factory.make_node_group(maas_url=nodegroup_url, network=network)
     url = reverse('enlist-metadata-user-data', args=['latest'])
     response = self.client.get(url, REMOTE_ADDR=ip)
     self.assertThat(
         response.content,
         MatchesAll(Contains(nodegroup_url), Not(Contains(maas_url))))
コード例 #12
0
ファイル: test_api.py プロジェクト: deepakhajare/maas
 def test_get_userdata_detects_request_origin(self):
     nodegroup_url = 'http://%s' % factory.make_name('host')
     maas_url = 'http://%s' % factory.make_hostname()
     self.patch(settings, 'DEFAULT_MAAS_URL', maas_url)
     network = IPNetwork("10.1.1/24")
     ip = factory.getRandomIPInNetwork(network)
     factory.make_node_group(maas_url=nodegroup_url, network=network)
     url = reverse('enlist-metadata-user-data', args=['latest'])
     response = self.client.get(url, REMOTE_ADDR=ip)
     self.assertThat(
         response.content,
         MatchesAll(Contains(nodegroup_url), Not(Contains(maas_url))))
コード例 #13
0
ファイル: test_dns.py プロジェクト: cloudbase/maas
 def test_edit_nodegroupinterface_updates_DNS_zone(self):
     self.patch(settings, "DNS_CONNECT", True)
     old_network = IPNetwork('192.168.7.1/24')
     old_ip = factory.getRandomIPInNetwork(old_network)
     nodegroup = factory.make_node_group(
         network=old_network,
         status=NODEGROUP_STATUS.ACCEPTED,
         management=NODEGROUPINTERFACE_MANAGEMENT.DHCP_AND_DNS)
     interface = nodegroup.get_managed_interface()
     # Edit nodegroup's network information to '192.168.44.1/24'
     interface.ip = '192.168.44.7'
     interface.router_ip = '192.168.44.14'
     interface.broadcast_ip = '192.168.44.255'
     interface.netmask = '255.255.255.0'
     interface.ip_range_low = '192.168.44.0'
     interface.ip_range_high = '192.168.44.255'
     interface.save()
     ip = factory.getRandomIPInNetwork(IPNetwork('192.168.44.1/24'))
     # The ip from the old network does not resolve anymore.
     self.assertEqual([''], self.dig_resolve(generated_hostname(old_ip)))
     self.assertEqual([''], self.dig_reverse_resolve(old_ip))
     # The ip from the new network resolves.
     self.assertDNSMatches(generated_hostname(ip), nodegroup.name, ip)
コード例 #14
0
ファイル: test_api_pxeconfig.py プロジェクト: cloudbase/maas
    def test_pxeconfig_enlistment_preseed_url_detects_request_origin(self):
        self.silence_get_ephemeral_name()
        hostname = factory.make_hostname()
        ng_url = 'http://%s' % hostname
        network = IPNetwork("10.1.1/24")
        ip = factory.getRandomIPInNetwork(network)
        self.patch(server_address, 'gethostbyname', Mock(return_value=ip))
        factory.make_node_group(maas_url=ng_url, network=network)
        params = self.get_default_params()

        # Simulate that the request originates from ip by setting
        # 'REMOTE_ADDR'.
        response = self.client.get(
            reverse('pxeconfig'), params, REMOTE_ADDR=ip)
        self.assertThat(
            json.loads(response.content)["preseed_url"],
            StartsWith(ng_url))
コード例 #15
0
ファイル: test_api_pxeconfig.py プロジェクト: cloudbase/maas
    def test_pxeconfig_enlistment_preseed_url_detects_request_origin(self):
        self.silence_get_ephemeral_name()
        hostname = factory.make_hostname()
        ng_url = 'http://%s' % hostname
        network = IPNetwork("10.1.1/24")
        ip = factory.getRandomIPInNetwork(network)
        self.patch(server_address, 'gethostbyname', Mock(return_value=ip))
        factory.make_node_group(maas_url=ng_url, network=network)
        params = self.get_default_params()

        # Simulate that the request originates from ip by setting
        # 'REMOTE_ADDR'.
        response = self.client.get(reverse('pxeconfig'),
                                   params,
                                   REMOTE_ADDR=ip)
        self.assertThat(
            json.loads(response.content)["preseed_url"], StartsWith(ng_url))
コード例 #16
0
ファイル: test_api_pxeconfig.py プロジェクト: cloudbase/maas
    def test_preseed_url_for_known_node_uses_nodegroup_maas_url(self):
        ng_url = 'http://%s' % factory.make_name('host')
        network = IPNetwork("10.1.1/24")
        ip = factory.getRandomIPInNetwork(network)
        self.patch(server_address, 'gethostbyname', Mock(return_value=ip))
        nodegroup = factory.make_node_group(maas_url=ng_url, network=network)
        params = self.get_mac_params()
        node = MACAddress.objects.get(mac_address=params['mac']).node
        node.nodegroup = nodegroup
        node.save()

        # Simulate that the request originates from ip by setting
        # 'REMOTE_ADDR'.
        response = self.client.get(
            reverse('pxeconfig'), params, REMOTE_ADDR=ip)
        self.assertThat(
            json.loads(response.content)["preseed_url"],
            StartsWith(ng_url))
コード例 #17
0
ファイル: test_api_pxeconfig.py プロジェクト: cloudbase/maas
    def test_preseed_url_for_known_node_uses_nodegroup_maas_url(self):
        ng_url = 'http://%s' % factory.make_name('host')
        network = IPNetwork("10.1.1/24")
        ip = factory.getRandomIPInNetwork(network)
        self.patch(server_address, 'gethostbyname', Mock(return_value=ip))
        nodegroup = factory.make_node_group(maas_url=ng_url, network=network)
        params = self.get_mac_params()
        node = MACAddress.objects.get(mac_address=params['mac']).node
        node.nodegroup = nodegroup
        node.save()

        # Simulate that the request originates from ip by setting
        # 'REMOTE_ADDR'.
        response = self.client.get(reverse('pxeconfig'),
                                   params,
                                   REMOTE_ADDR=ip)
        self.assertThat(
            json.loads(response.content)["preseed_url"], StartsWith(ng_url))
コード例 #18
0
ファイル: test_api_enlistment.py プロジェクト: cloudbase/maas
 def test_created_node_nodegroup_is_inferred_from_origin_network(self):
     network = IPNetwork('192.168.0.3/24')
     origin_ip = factory.getRandomIPInNetwork(network)
     NodeGroup.objects.ensure_master()
     nodegroup = factory.make_node_group(network=network)
     response = self.client.post(
         reverse('nodes_handler'),
         data={
             'op': 'new',
             'hostname': factory.make_name('hostname'),
             'architecture': factory.getRandomChoice(ARCHITECTURE_CHOICES),
             'after_commissioning_action': (
                 NODE_AFTER_COMMISSIONING_ACTION.DEFAULT),
             'mac_addresses': [factory.getRandomMACAddress()],
         },
         REMOTE_ADDR=origin_ip)
     self.assertEqual(httplib.OK, response.status_code, response.content)
     parsed_result = json.loads(response.content)
     node = Node.objects.get(system_id=parsed_result.get('system_id'))
     self.assertEqual(nodegroup, node.nodegroup)
コード例 #19
0
 def test_created_node_nodegroup_is_inferred_from_origin_network(self):
     network = IPNetwork('192.168.0.3/24')
     origin_ip = factory.getRandomIPInNetwork(network)
     NodeGroup.objects.ensure_master()
     nodegroup = factory.make_node_group(network=network)
     response = self.client.post(
         reverse('nodes_handler'),
         data={
             'op':
             'new',
             'hostname':
             factory.make_name('hostname'),
             'architecture':
             factory.getRandomChoice(ARCHITECTURE_CHOICES),
             'after_commissioning_action':
             (NODE_AFTER_COMMISSIONING_ACTION.DEFAULT),
             'mac_addresses': [factory.getRandomMACAddress()],
         },
         REMOTE_ADDR=origin_ip)
     self.assertEqual(httplib.OK, response.status_code, response.content)
     parsed_result = json.loads(response.content)
     node = Node.objects.get(system_id=parsed_result.get('system_id'))
     self.assertEqual(nodegroup, node.nodegroup)
コード例 #20
0
 def test_get_maas_facing_server_address_returns_local_IP(self):
     ip = factory.getRandomIPInNetwork(IPNetwork('127.0.0.0/8'))
     self.set_DEFAULT_MAAS_URL(hostname=ip)
     self.assertEqual(ip, get_maas_facing_server_address())
コード例 #21
0
 def test_get_maas_facing_server_address_returns_nodegroup_maas_url(self):
     ip = factory.getRandomIPInNetwork(IPNetwork('127.0.0.0/8'))
     maas_url = 'http://%s' % ip
     nodegroup = factory.make_node_group(maas_url=maas_url)
     self.assertEqual(
         ip, server_address.get_maas_facing_server_host(nodegroup))
コード例 #22
0
ファイル: test_server_address.py プロジェクト: cloudbase/maas
 def test_get_maas_facing_server_address_returns_nodegroup_maas_url(self):
     ip = factory.getRandomIPInNetwork(IPNetwork('127.0.0.0/8'))
     maas_url = 'http://%s' % ip
     nodegroup = factory.make_node_group(maas_url=maas_url)
     self.assertEqual(ip,
                      server_address.get_maas_facing_server_host(nodegroup))
コード例 #23
0
ファイル: test_server_address.py プロジェクト: cloudbase/maas
 def test_get_maas_facing_server_address_returns_local_IP(self):
     ip = factory.getRandomIPInNetwork(IPNetwork('127.0.0.0/8'))
     self.set_DEFAULT_MAAS_URL(hostname=ip)
     self.assertEqual(ip, get_maas_facing_server_address())